home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / editors / tscredd2 / scrdisk5.exe / arc / SCRDEMO.P < prev    next >
Text File  |  1990-04-28  |  32KB  |  1,209 lines

  1. {$M 10000,7000,90000}
  2. Program ScrDemo;
  3.  
  4. {
  5. Before trying to compile and run this program, read and follow Part II of
  6. Turbo ScrEdit Tutor (stored in the file ScrEdit.Tut.)
  7. }
  8.  
  9. USES Crt,Dos,ScrMouse,ScrEdit;
  10.  
  11. {
  12. Remember to use Turbo ScrEdit to compile the screens in ScrDemo.Scr before you
  13. try to compile and run this program. See Turbo ScrEdit Tutor for instructions.
  14. }
  15. {$I ScrDemo.001}
  16. {$I ScrDemo.002}
  17. {$I ScrDemo.003}
  18. {$I ScrDemo.004}
  19. {$I ScrDemo.005}
  20.  
  21. Var
  22.     Result,
  23.     Tr,Tc,Br,Bc     : Integer;
  24.     Option          : Integer;
  25.     Screen_Mode     : Integer;
  26.     Cursor_Position : Integer;
  27.     Name,
  28.     Address_a,
  29.     Address_b: String[34];
  30.     City:String[20];
  31.     State:String[2];
  32.     ZipCode:String[10];
  33.     Phone:String[15];
  34.     SSN  :String[12];
  35.     Gross  :Real;
  36.  
  37.  
  38.  
  39. {*****************************
  40.  
  41. MENU OPTION 1 (Example data entry screen)
  42.  
  43. Section 2 of Turbo ScrEdit Tutor Describes this portion of code
  44.  
  45. *****************************}
  46.  
  47.  
  48. Procedure RecordDemo_Init;
  49. Var R :Integer;
  50. Begin
  51. {
  52. Initialize_Dupe_Fields_buf;
  53. }
  54. Name     := '';
  55. Address_a:= '';
  56. Address_b:= '';
  57. City     := '';
  58. State    := '';
  59. ZipCode  := '';
  60. Phone    := '';
  61. Ssn      := '';
  62. Gross    := 0.0;
  63. S_Point  := 1;
  64. S_EnterAsTab := False;
  65. S_LoadScreen('Dupe_Fields');
  66. S_ClearScreen(1);
  67. End;
  68.  
  69.  
  70.  
  71. Function MakeMsg(Mode,Bg,Fg:integer):S_Str80;
  72. Var ColorWork : String[3];
  73.     WorkStr   : String[85];
  74. Begin
  75. Case mode Of
  76.   1 : workstr := 'Change colors of ERROR messages from VALIDATE procedures Bg(';
  77.   2 : workstr := 'Change Colors of HELP messages accessed by auto help or "?" Bg(';
  78.   3 : workstr := 'Specify the color attributes for you customer messages Bg (';
  79.   End;
  80. Str(Bg:1,ColorWork);
  81. WorkStr := WorkStr + ColorWork + ') Fg(';
  82. Str(Fg:2,ColorWork);
  83. MakeMsg := WorkStr + ColorWork + ')';
  84. End;
  85.  
  86.  
  87.  
  88. Procedure EnterRecords;
  89. Var R : Boolean;
  90. Begin
  91. If  S_EnterAsTab Then
  92.   Dupe_Fields_buf.Key := ' F10 '
  93. Else
  94.   Dupe_Fields_buf.Key := 'Enter';
  95.  
  96. S_ReadScreen;
  97.  
  98.  
  99. If  (S_Ctrl) And (UpCase(S_Ch) = 'A') Then
  100.   Begin
  101.   Case S_Cursor Of
  102.      S_Off
  103.        : S_Cursor := S_Bold;
  104.      S_Bold
  105.        : S_Cursor := S_Normal;
  106.      S_Normal
  107.        : S_Cursor := S_InverseNormal;
  108.      S_InverseNormal
  109.        : S_Cursor := S_InverseBold;
  110.      Else
  111.          S_Cursor := S_Off;
  112.      End;
  113.   End;
  114.  
  115. While ((S_Home)Or(S_End)Or(S_Up)Or(S_Down)Or(S_PgUp)Or(S_PgDn)) Do
  116.   Begin
  117.   If  (S_Home)Or(S_End)  Then S_ErrorMsg:=MakeMsg(1,S_ErrorBg,S_ErrorFg);
  118.   If  (S_Up)  Or(S_Down) Then S_AutoHelpMsg:=MakeMsg(2,S_HelpBg,S_HelpFg);
  119.   If  (S_PgUp)Or(S_PgDn) Then S_UserMsg:=MakeMsg(3,S_UserBg,S_UserFg);
  120.  
  121.   S_ReadKey;
  122.  
  123.   If  (S_Home)Or(S_End) Then
  124.     Begin
  125.     If  (S_Home)         Then Inc(S_ErrorBg);
  126.     If  (S_End)          Then Inc(S_ErrorFg);
  127.     If  (S_ErrorBg > 7)  Then S_ErrorBg := 0;
  128.     If  (S_ErrorFg > 15) Then S_ErrorFg := 0;
  129.     End;
  130.  
  131.   If (S_Up)Or(S_Down) Then
  132.     Begin
  133.     If  (S_Up)          Then Inc(S_HelpBg);
  134.     If  (S_Down)        Then Inc(S_HelpFg);
  135.     If  (S_HelpBg > 7)  Then S_HelpBg := 0;
  136.     If  (S_HelpFg > 15) Then S_HelpFg := 0;
  137.     End;
  138.  
  139.   If  (S_PgUp)Or(S_PgDn) Then
  140.     Begin
  141.     If  (S_PgUp)        Then Inc(S_UserBg);
  142.     If  (S_PgDn)        Then Inc(S_UserFg);
  143.     If  (S_UserBg > 7)  Then S_UserBg := 0;
  144.     If  (S_UserFg > 15) Then S_UserFg := 0;
  145.     End;
  146.   End;
  147.  
  148.  
  149. If  S_F1 Then
  150.     Begin
  151.     If  Not S_IsDupe(S_PrevFld) Then
  152.         Begin
  153.         If  S_PrevFld in [12,15,18,21,24,27,30,33,36] Then
  154.             Begin
  155.             R:=S_SetDupe(S_PrevFld-1);
  156.             R:=S_SetDupe(S_PrevFld+1);
  157.             R:=S_SetDupe(S_PrevFld);
  158.             End;
  159.         If  S_IsDupe(S_PrevFld) Then
  160.             Case S_PrevFld of
  161.                12 : Begin
  162.                     Dupe_Fields_buf.a := '[';
  163.                     Dupe_Fields_buf.r := ']';
  164.                     End;
  165.                15 : Begin
  166.                     Dupe_Fields_buf.b := '[';
  167.                     Dupe_Fields_buf.s := ']';
  168.                     End;
  169.                18 : Begin
  170.                     Dupe_Fields_buf.c := '[';
  171.                     Dupe_Fields_buf.t := ']';
  172.                     End;
  173.                21 : Begin
  174.                     Dupe_Fields_buf.d := '[';
  175.                     Dupe_Fields_buf.u := ']';
  176.                     End;
  177.                24 : Begin
  178.                     Dupe_Fields_buf.e := '[';
  179.                     Dupe_Fields_buf.v := ']';
  180.                     End;
  181.                27 : Begin
  182.                     Dupe_Fields_buf.f := '[';
  183.                     Dupe_Fields_buf.w := ']';
  184.                     End;
  185.                30 : Begin
  186.                     Dupe_Fields_buf.g := '[';
  187.                     Dupe_Fields_buf.x := ']';
  188.                     End;
  189.                33 : Begin
  190.                     Dupe_Fields_buf.h := '[';
  191.                     Dupe_Fields_buf.y := ']';
  192.                     End;
  193.                36 : Begin
  194.                     Dupe_Fields_buf.i := '[';
  195.                     Dupe_Fields_buf.z := ']';
  196.                     End;
  197.                End;
  198.         End
  199.     Else
  200.         Begin
  201.         If  S_IsDupe(S_PrevFld)Then
  202.             Begin
  203.             If  S_PrevFld in [12,15,18,21,24,27,30,33,36] Then
  204.                 Begin
  205.                 S_ReSetDupe(S_PrevFld-1);
  206.                 S_ReSetDupe(S_PrevFld+1);
  207.                 S_ReSetDupe(S_PrevFld);
  208.                 End;
  209.             If  Not S_IsDupe(S_PrevFld) Then
  210.                 Case S_PrevFld Of
  211.                   12 : Begin Dupe_Fields_buf.a:='';Dupe_Fields_buf.r:='';End;
  212.                   15 : Begin Dupe_Fields_buf.b:='';Dupe_Fields_buf.s:='';End;
  213.                   18 : Begin Dupe_Fields_buf.c:='';Dupe_Fields_buf.t:='';End;
  214.                   21 : Begin Dupe_Fields_buf.d:='';Dupe_Fields_buf.u:='';End;
  215.                   24 : Begin Dupe_Fields_buf.e:='';Dupe_Fields_buf.v:='';End;
  216.                   27 : Begin Dupe_Fields_buf.f:='';Dupe_Fields_buf.w:='';End;
  217.                   30 : Begin Dupe_Fields_buf.g:='';Dupe_Fields_buf.x:='';End;
  218.                   33 : Begin Dupe_Fields_buf.h:='';Dupe_Fields_buf.y:='';End;
  219.                   36 : Begin Dupe_Fields_buf.i:='';Dupe_Fields_buf.z:='';End;
  220.                   End;
  221.             End;
  222.         End;
  223.     S_Point := S_PrevFld;
  224.     End;
  225.  
  226. If  S_F2 Then
  227.     Begin
  228.     S_ClearDupes;
  229.     FillChar(Dupe_Fields_buf.a,2,0);
  230.     FillChar(Dupe_Fields_buf.b,2,0);
  231.     FillChar(Dupe_Fields_buf.c,2,0);
  232.     FillChar(Dupe_Fields_buf.d,2,0);
  233.     FillChar(Dupe_Fields_buf.e,2,0);
  234.     FillChar(Dupe_Fields_buf.f,2,0);
  235.     FillChar(Dupe_Fields_buf.g,2,0);
  236.     FillChar(Dupe_Fields_buf.h,2,0);
  237.     FillChar(Dupe_Fields_buf.i,2,0);
  238.     FillChar(Dupe_Fields_buf.r,2,0);
  239.     FillChar(Dupe_Fields_buf.s,2,0);
  240.     FillChar(Dupe_Fields_buf.t,2,0);
  241.     FillChar(Dupe_Fields_buf.u,2,0);
  242.     FillChar(Dupe_Fields_buf.v,2,0);
  243.     FillChar(Dupe_Fields_buf.w,2,0);
  244.     FillChar(Dupe_Fields_buf.x,2,0);
  245.     FillChar(Dupe_Fields_buf.y,2,0);
  246.     FillChar(Dupe_Fields_buf.z,2,0);
  247.     End;
  248.  
  249. If  S_F3 Then
  250.     Begin
  251.     If  S_HelpSound Then
  252.       Begin
  253.       S_HelpSound := False;
  254.       S_ErrorSound:= False;
  255.       S_UserSound := False;
  256.       End
  257.     Else
  258.       Begin
  259.       S_HelpSound :=True;
  260.       S_ErrorSound:=True;
  261.       S_UserSound :=True;
  262.       End;
  263.     End;
  264.  
  265. If  S_F4 Then
  266.     If  S_AutoHelp Then S_AutoHelp := False Else S_AutoHelp := True;
  267.  
  268. If  S_F5 Then
  269.     If  S_AutoValidate Then
  270.         S_AutoValidate := False
  271.     Else
  272.         S_AutoValidate := True;
  273.  
  274. If  S_F6 Then
  275.     If  Dupe_Fields_buf.Name1 > '' Then
  276.       Begin
  277.       Dupe_Fields_buf.Name2      := Dupe_Fields_buf.Name1;
  278.       Dupe_Fields_buf.Address2_a := Dupe_Fields_buf.Address1_a;
  279.       Dupe_Fields_buf.Address2_b := Dupe_Fields_buf.Address1_b;
  280.       Dupe_Fields_buf.City2      := Dupe_Fields_buf.City1;
  281.       Dupe_Fields_buf.S2         := Dupe_Fields_buf.S1;
  282.       Dupe_Fields_buf.Zip2       := Dupe_Fields_buf.Zip1;
  283.       Dupe_Fields_buf.Phone2     := Dupe_Fields_buf.Phone1;
  284.       Dupe_Fields_buf.Ssn2       := Dupe_Fields_buf.Ssn1;
  285.       Dupe_Fields_buf.Gross2     := Dupe_Fields_buf.Gross1;
  286.       FillChar(Dupe_Fields_buf.Name1,35,0);
  287.       FillChar(Dupe_Fields_buf.Address1_a,35,0);
  288.       FillChar(Dupe_Fields_buf.Address1_b,35,0);
  289.       FillChar(Dupe_Fields_buf.City1,21,0);
  290.       FillChar(Dupe_Fields_buf.S1,3,0);
  291.       FillChar(Dupe_Fields_buf.Zip1,10,0);
  292.       FillChar(Dupe_Fields_buf.Phone1,15,0);
  293.       FillChar(Dupe_Fields_buf.Ssn1,12,0);
  294.       Dupe_Fields_buf.Gross1 := 0.0;
  295.       S_Point := 8;
  296.       End
  297.     Else
  298.       S_UserMsg := ' No record entered to Edit.. ';
  299.  
  300. If  S_F9 Then
  301.     If S_EnterAsTab Then
  302.        S_EnterAsTab := False
  303.     Else
  304.        S_EnterAsTab := True;
  305.  
  306. If  (S_EnterAsTab)And(S_F10) Then
  307.     Begin
  308.     S_ScreenValid := True;
  309.     S_ValidateScreen;
  310.     if  Not S_ScreenValid Then S_ResetKeyFlags;
  311.     End;
  312.  
  313. if  (((Not S_EnterAsTab)And(S_Enter))Or((S_EnterAsTab)And(S_F10))) Then
  314.     Begin
  315.     Name     :=Dupe_Fields_buf.Name2;
  316.     Address_a:=Dupe_Fields_buf.Address2_a;
  317.     Address_b:=Dupe_Fields_buf.Address2_b;
  318.     City     :=Dupe_Fields_buf.City2;
  319.     State    :=Dupe_Fields_buf.S2;
  320.     ZipCode  :=Dupe_Fields_buf.Zip2;
  321.     Phone    :=Dupe_Fields_buf.Phone2;
  322.     Ssn      :=Dupe_Fields_buf.Ssn2;
  323.     Gross    :=Dupe_Fields_buf.Gross2;
  324.     S_ClearScreen(1);
  325.     Dupe_Fields_buf.Name1     :=Name;
  326.     Dupe_Fields_buf.Address1_a:=Address_a;
  327.     Dupe_Fields_buf.Address1_b:=Address_b;
  328.     Dupe_Fields_buf.City1     :=City;
  329.     Dupe_Fields_buf.S1        :=State;
  330.     Dupe_Fields_buf.Zip1      :=ZipCode;
  331.     Dupe_Fields_buf.Phone1    :=Phone;
  332.     Dupe_Fields_buf.Ssn1      :=Ssn;
  333.     Dupe_Fields_buf.Gross1    :=Gross;
  334.     S_Point := 8;
  335.     End;
  336. End;
  337.  
  338.  
  339.  
  340.  
  341. Procedure RecordDemo;
  342. Var R : Integer;
  343. Begin
  344. RecordDemo_Init;
  345. Repeat
  346.    EnterRecords;
  347. Until S_Esc;
  348. S_EnterAsTab := False;
  349. S_AutoHelp   := False;
  350. S_ErrorSound := True;
  351. S_HelpSound  := True;
  352. S_UserSound  := True;
  353. R := S_SetDisplayOff(1);
  354. S_ClearDupes;
  355. FillChar(Dupe_Fields_buf.a,2,0);
  356. FillChar(Dupe_Fields_buf.b,2,0);
  357. FillChar(Dupe_Fields_buf.c,2,0);
  358. FillChar(Dupe_Fields_buf.d,2,0);
  359. FillChar(Dupe_Fields_buf.e,2,0);
  360. FillChar(Dupe_Fields_buf.f,2,0);
  361. FillChar(Dupe_Fields_buf.g,2,0);
  362. FillChar(Dupe_Fields_buf.h,2,0);
  363. FillChar(Dupe_Fields_buf.i,2,0);
  364. FillChar(Dupe_Fields_buf.r,2,0);
  365. FillChar(Dupe_Fields_buf.s,2,0);
  366. FillChar(Dupe_Fields_buf.t,2,0);
  367. FillChar(Dupe_Fields_buf.u,2,0);
  368. FillChar(Dupe_Fields_buf.v,2,0);
  369. FillChar(Dupe_Fields_buf.w,2,0);
  370. FillChar(Dupe_Fields_buf.x,2,0);
  371. FillChar(Dupe_Fields_buf.y,2,0);
  372. FillChar(Dupe_Fields_buf.z,2,0);
  373. End;
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387. {*****************************
  388.  
  389. MENU OPTION 2 (Demo of Mouse functions)
  390.  
  391. Section 3 of Turbo ScrEdit Tutor Describes this portion of code
  392.  
  393. *****************************}
  394.  
  395. Procedure Set_Button_Labels;
  396. Begin
  397. If  S_MsLeftPressed Then
  398.   Mouse_Demo_buf.Lb := '*Pressed*'
  399. Else
  400.   If  S_MsLeftReleased Then
  401.     Mouse_Demo_buf.Lb := '*Released*'
  402.   else
  403.     Mouse_Demo_buf.Lb := '';
  404.  
  405. If  S_MsMiddlePressed Then
  406.   Mouse_Demo_buf.Mb:='*Pressed*'
  407. Else
  408.   If  S_MsMiddleReleased Then
  409.     Mouse_Demo_buf.Mb :='*Released*'
  410.   Else
  411.     Mouse_Demo_buf.Mb := '';
  412.  
  413. If S_MsRightPressed Then
  414.   Mouse_Demo_buf.Rb := '*Pressed*'
  415. Else
  416.   If  S_MsRightReleased Then
  417.     Mouse_Demo_buf.Rb := '*Released*'
  418.   Else
  419.     Mouse_Demo_buf.Rb := '';
  420. End;
  421.  
  422.  
  423.  
  424.  
  425. Procedure Set_Event_Mask;
  426. Var R:Integer;
  427. Begin
  428. If  Not S_MsLeftPressed Then Exit;
  429.  
  430. If  (S_MsRow=2)And((S_MsCol>2)And(S_MsCol<19))Then
  431.   Begin
  432.   If Mouse_Demo_buf.EM[1]='1' Then
  433.     Begin
  434.     Mouse_Demo_buf.EM[1]:='0';
  435.     R := S_ChangeFieldColor(1,2,0,7);
  436.     End
  437.   Else
  438.     Begin
  439.     Mouse_Demo_buf.EM[1]:='1';
  440.     R := S_ChangeFieldColor(1,2,7,0);
  441.     End;
  442.   End;
  443.  
  444.  
  445. If  (S_MsRow=2)And((S_MsCol>20)And(S_MsCol<40)) Then
  446.   S_ErrorMsg := 'The Left Mouse Button must remain enabled for this demo..';
  447.  
  448. If  (S_MsRow=3)And((S_MsCol>20)And(S_MsCol<40)) Then
  449.  Begin
  450.  If Mouse_Demo_buf.EM[3]='1' Then
  451.    Begin
  452.    Mouse_Demo_buf.EM[3]:='0';
  453.    R := S_ChangeFieldColor(6,2,0,7);
  454.    End
  455.  Else
  456.    Begin
  457.    Mouse_Demo_buf.EM[3]:='1';
  458.    R := S_ChangeFieldColor(6,2,7,0);
  459.    End;
  460.  End;
  461.  
  462.  
  463. If  (S_MsRow=2)And((S_MsCol>59)And(S_MsCol<80)) Then
  464.  Begin
  465.  if Mouse_Demo_buf.EM[4]='1' Then
  466.    Begin
  467.    Mouse_Demo_buf.EM[4]:='0';
  468.    R := S_ChangeFieldColor(4,2,0,7);
  469.    End
  470.  Else
  471.    Begin
  472.    Mouse_Demo_buf.EM[4]:='1';
  473.    R := S_ChangeFieldColor(4,2,7,0);
  474.    End;
  475.  End;
  476.  
  477. If  (S_MsRow=3)And((S_MsCol>59)And(S_MsCol<80)) Then
  478.  Begin
  479.  If Mouse_Demo_buf.EM[5]='1' Then
  480.    Begin
  481.    Mouse_Demo_buf.EM[5]:='0';
  482.    R := S_ChangeFieldColor(8,2,0,7);
  483.    End
  484.  Else
  485.    Begin
  486.    Mouse_Demo_buf.EM[5]:='1';
  487.    R := S_ChangeFieldColor(8,2,7,0);
  488.    End;
  489.  End;
  490.  
  491.  
  492.  
  493. If  (S_MsRow=2)And((S_MsCol>40)And(S_MsCol<59)) Then
  494.  Begin
  495.  If Mouse_Demo_buf.EM[6]='1' Then
  496.    Begin
  497.    Mouse_Demo_buf.EM[6]:='0';
  498.    R := S_ChangeFieldColor(3,2,0,7);
  499.    End
  500.  Else
  501.    Begin
  502.    Mouse_Demo_buf.EM[6]:='1';
  503.    R := S_ChangeFieldColor(3,2,7,0);
  504.    End;
  505.  End;
  506.  
  507.  
  508. If  (S_MsRow=3)And((S_MsCol>40)And(S_MsCol<59)) Then
  509.  Begin
  510.  If Mouse_Demo_buf.EM[7]='1' Then
  511.    Begin
  512.    Mouse_Demo_buf.EM[7]:='0';
  513.    R := S_ChangeFieldColor(7,2,0,7);
  514.    End
  515.  Else
  516.    Begin
  517.    Mouse_Demo_buf.EM[7]:='1';
  518.    R := S_ChangeFieldColor(7,2,7,0);
  519.    End;
  520.  End;
  521. End;
  522.  
  523.  
  524. Procedure Change_Mode;
  525. Var R:Integer;
  526. Begin
  527. If Not S_MsLeftPressed Then Exit;
  528.  
  529. If  (S_MsRow=7)And((S_MsCol>1)And(S_MsCol<5)) Then
  530.   Begin
  531.   Tr:=6;
  532.   Tc:=30;
  533.   Br:=17;
  534.   Bc:=52;
  535.   S_SetMouseRange(Tc,Tr,Bc,Br);
  536.   S_MsRow := 11;
  537.   S_MsCol := 41;
  538.   S_MoveMouse;
  539.   End;
  540.  
  541. If  (S_MsRow=9)And((S_MsCol>1)And(S_MsCol<5)) Then
  542.   Begin
  543.   Tr:=6;
  544.   Tc:=57;
  545.   Br:=17;
  546.   Bc:=79;
  547.   S_SetMouseRange(Tc,Tr,Bc,Br);
  548.   S_MsRow := 11;
  549.   S_MsCol := 68;
  550.   S_MoveMouse;
  551.   End;
  552.  
  553. If  (S_MsRow=5)And((S_MsCol>1)And(S_MsCol<5)) Then
  554.   Begin
  555.   R := S_ChangeFieldColor(5,2,2,0);
  556.   Mouse_Demo_buf.End_Set_Up := '** FINISHED **';
  557.   Tr:=2;
  558.   Tc:=2;
  559.   Br:=3;
  560.   Bc:=79;
  561.   S_SetMouseRange(Tc,Tr,Bc,Br);
  562.   S_MsRow := 3;
  563.   S_MsCol := 8;
  564.   S_MoveMouse;
  565.   End;
  566. End;
  567.  
  568.  
  569.  
  570. Procedure MouseDemo;
  571. Var R:Integer;
  572. Begin
  573. S_ActivateMouse;
  574.  
  575. S_SetMouseEvent(Mouse_Demo_buf.EM);
  576. Tr:=5;
  577. Tc:=1;
  578. Br:=18;
  579. Bc:=28;
  580. S_SetMouseRange(Tc,Tr,Bc,Br);
  581. S_MsRow := 5;
  582. S_MsCol := 1;
  583. S_ShowMouse;
  584.  
  585. Repeat
  586.  Mouse_Demo_buf.Cr:=S_MsRow;
  587.  Mouse_Demo_buf.Cc:=S_MsCol;
  588.  Mouse_Demo_buf.Ur:=Tr;
  589.  Mouse_Demo_buf.Uc:=Tc;
  590.  Mouse_Demo_buf.Lr:=Br;
  591.  Mouse_Demo_buf.Lc:=Bc;
  592.  
  593.  S_ResetMouseFlags;
  594.  
  595.  S_ReadKey;
  596.  
  597.  If  (S_MouseEvent) Then S_AnalizeMouse;
  598.  
  599.  Set_Button_Labels;
  600.  
  601.  If (((S_MsLeftPressed)And(S_MsRow=11)And((S_MsCol>35)And(S_MsCol<48)))Or
  602.      ((S_MsLeftPressed)And(S_MsRow=11)And((S_MsCol>62)And(S_MsCol<75)))Or
  603.      ((S_MsLeftPressed)And(S_MsRow=3) And((S_MsCol>2) And(S_MsCol<17)))) Then
  604.    Begin
  605.    Tr:=5;
  606.    Tc:=1;
  607.    Br:=18;
  608.    Bc:=28;
  609.    S_SetMouseRange(Tc,Tr,Bc,Br);
  610.    If (S_MsRow=3) Then
  611.      Begin
  612.      R := S_ChangeFieldColor(5,2,0,2);
  613.      Mouse_Demo_buf.End_Set_Up:='';
  614.      S_SetMouseEvent(Mouse_Demo_buf.EM);
  615.      S_MsRow := 5;
  616.      S_MsCol := 3;
  617.      S_MoveMouse;
  618.      End
  619.    Else
  620.      If  (S_MsCol > 62) Then
  621.        Begin
  622.        S_MsRow:=9;
  623.        S_MsCol:=3;
  624.        S_MoveMouse;
  625.        End
  626.      Else
  627.        Begin
  628.        S_MsRow:=7;
  629.        S_MsCol:=3;
  630.        S_MoveMouse;
  631.        End;
  632.    End
  633.  Else
  634.    Begin
  635.    Case S_MsRow Of
  636.     2,3  : Set_Event_Mask;
  637.     5,7,9: Change_Mode;
  638.     End;
  639.    End;
  640.  
  641. Until (S_MsLeftPressed)And(S_MsRow=11)And((S_MsCol>1)And(S_MsCol<5));
  642. S_ResetMouseFlags;
  643. S_HideMouse;
  644. S_DisableMouse;
  645. End;
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656. {*****************************
  657.  
  658. MENU OPTION 3  (Customizing Screen Colors)
  659.  
  660. Section 4 of Turbo ScrEdit Tutor Describes this portion of code
  661.  
  662. *****************************}
  663.  
  664. Procedure ChangeColors;
  665. Var R,X,Y:Integer;
  666. Begin
  667. Color_Demo_buf.F1:=2.0;
  668. Color_Demo_buf.A :=0.0;
  669. Color_Demo_buf.F2:=0.0;
  670. Color_Demo_buf.B :=5.0;
  671. Color_Demo_buf.F3:=15.0;
  672. Color_Demo_buf.C :=0.0;
  673. Color_Demo_buf.F4:=14.0;
  674. Color_Demo_buf.D :=0.0;
  675. Color_Demo_buf.F5:=3.0;
  676. Color_Demo_buf.E :=0;
  677. Color_Demo_buf.F6:=2.0;
  678. Color_Demo_buf.F :=0.0;
  679. Color_Demo_buf.F7:=2.0;
  680. Color_Demo_buf.G :=0.0;
  681. Color_Demo_buf.F8:=15.0;
  682. Color_Demo_buf.H :=0.0;
  683. Color_Demo_buf.F9:=2.0;
  684. Color_Demo_buf.I :=0.0;
  685. S_PrevFld        := 1;
  686. While Not S_Esc Do
  687.   Begin
  688.  
  689.   S_Point := S_PrevFld;
  690.   S_ReadScreen;
  691.  
  692.   { Text }
  693.   R := S_ChangeScreenColor(
  694.     0,Trunc(Color_Demo_buf.A),Trunc(Color_Demo_buf.F1), 1,24, 1,80);
  695.  
  696.   { double line around logo }
  697.   R := S_ChangeScreenColor(
  698.     2,Trunc(Color_Demo_buf.D),Trunc(Color_Demo_buf.F4), 1,11, 1,80);
  699.  
  700.   { Logo }
  701.   R := S_ChangeScreenColor(
  702.     2,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 2, 9,10,69);
  703.  
  704.   { Fill in logo letters }
  705.   R := S_ChangeScreenColor(
  706.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 2, 8,11,11);
  707.   R := S_ChangeScreenColor(
  708.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 2, 8,18,18);
  709.   R := S_ChangeScreenColor(
  710.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 5, 8,22,22);
  711.   R := S_ChangeScreenColor(
  712.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 5, 8,27,27);
  713.   R := S_ChangeScreenColor(
  714.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 5, 8,31,31);
  715.   R := S_ChangeScreenColor(
  716.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 7, 8,35,35);
  717.   R := S_ChangeScreenColor(
  718.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 5, 6,36,36);
  719.   R := S_ChangeScreenColor(
  720.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 2, 8,40,40);
  721.   R := S_ChangeScreenColor(
  722.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 3, 3,47,47);
  723.   R := S_ChangeScreenColor(
  724.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 8, 8,47,47);
  725.   R := S_ChangeScreenColor(
  726.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 5, 8,51,51);
  727.   R := S_ChangeScreenColor(
  728.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 2, 8,56,56);
  729.   R := S_ChangeScreenColor(
  730.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 6, 8,60,60);
  731.   R := S_ChangeScreenColor(
  732.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 2, 8,64,64);
  733.  
  734.   { other logo text }
  735.   R := S_ChangeScreenColor(
  736.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 6, 6, 3, 7);
  737.   R := S_ChangeScreenColor(
  738.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 2, 2,21,24);
  739.   R := S_ChangeScreenColor(
  740.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 5, 5,67,78);
  741.   R := S_ChangeScreenColor(
  742.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 6, 6,69,76);
  743.   R := S_ChangeScreenColor(
  744.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 7, 7,70,74);
  745.   R := S_ChangeScreenColor(
  746.     0,Trunc(Color_Demo_buf.B),Trunc(Color_Demo_buf.F2), 8, 9,67,79);
  747.  
  748.   { Copyright Notice }
  749.   R := S_ChangeScreenColor(
  750.     0,Trunc(Color_Demo_buf.C),Trunc(Color_Demo_buf.F3),10,10,27,57);
  751.  
  752.   { Version Number }
  753.   R := S_ChangeScreenColor(
  754.     0,Trunc(Color_Demo_buf.E),Trunc(Color_Demo_buf.F5), 3, 3,71,75);
  755.  
  756.   { text in configure box }
  757.   R := S_ChangeScreenColor(
  758.     0,Trunc(Color_Demo_buf.G),Trunc(Color_Demo_buf.F7),13,23,18,64);
  759.  
  760.   { single line box }
  761.   R := S_ChangeScreenColor(
  762.     1,Trunc(Color_Demo_buf.F),Trunc(Color_Demo_buf.F6),13,24,17,65);
  763.  
  764.   X := 1;
  765.   While (X < 19) Do
  766.     Begin
  767.     R := S_ChangeFieldColor(
  768.       X,1,Trunc(Color_Demo_buf.H),Trunc(Color_Demo_buf.F8));
  769.     R := S_ChangeFieldColor(
  770.       X,2,Trunc(Color_Demo_buf.I),Trunc(Color_Demo_buf.F9));
  771.     Inc(X);
  772.     End;
  773.  
  774.   S_RefreshScreen;
  775.   End;
  776. End;
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789. {*****************************
  790.  
  791. MENU OPTION 9 (Mixed ScrEdit)
  792.  
  793. Section 4 of Turbo ScrEdit Tutor Describes this portion of code
  794.  
  795. *****************************}
  796.  
  797.  
  798. Procedure Back_To_Turbo_Pascal_Land;
  799. Var
  800. Response : String[10];
  801. Begin
  802. ClrScr;
  803. Repeat
  804.     ClrScr;
  805.     WriteLn('This is regular pascal code now.');
  806.     WriteLn('');
  807.     WriteLn('You can do anything now that you want to, use any ');
  808.     WriteLn('programming statement that you wish to.  When you');
  809.     WriteLn('are ready to resume with Turbo ScrEdit just return');
  810.     WriteLn('and the screen will be reloaded and you will resume');
  811.     WriteLn('at the point where you left the screen.');
  812.     WriteLn;
  813.     Write('Type "RETURN" in upper case to end this example...');
  814.     ReadLn(Response);
  815. Until (Response = 'RETURN')
  816. End;
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825. {*****************************
  826.  
  827. START OF MAIN MENU SCREEN PROCEDURES
  828.  
  829. Section 1 of Turbo ScrEdit Tutor Describes this portion of code
  830.  
  831. *****************************}
  832.  
  833. Procedure Process_Screen;
  834. Begin
  835.  
  836. {*** changes ****}
  837.  
  838. If  Screen_Mode = 1 Then
  839.     Begin
  840.     Val(Demo_Screen_Buf.OP,Cursor_Position,Result);
  841.     Case Cursor_Position of
  842.        1 : S_Point := 5;
  843.        2 : S_Point := 8;
  844.        3 : S_Point := 12;
  845.        4 : S_Point := 14;
  846.        5 : S_Point := 16;
  847.     else
  848.         S_Point := S_FirstField;
  849.     End; {Case of}
  850.     End;
  851.  
  852. If  Screen_Mode = 2 then
  853.     Begin
  854.     S_Point         := S_Point + 1;
  855.     Val(Demo_Screen_Buf.OP,Cursor_Position,Result);
  856.     Case Cursor_Position of
  857.        0 : S_Point := 4;
  858.        1 : If (S_Point > 7) Or
  859.               (S_Point < 5) Then
  860.               S_Point := 5;
  861.        2 : Begin
  862.            If (S_Point > 11) Or
  863.               (S_Point < 8)  Then
  864.               S_Point := 8;
  865.            End;
  866.        3 : If (S_Point > 13) Or
  867.               (S_Point < 12) Then
  868.               S_Point := 12;
  869.        4 : Begin
  870.            If (S_Point > 15) Or
  871.               (S_Point < 14) Then
  872.               S_Point := 14;
  873.            End;
  874.        5 : S_Point := 16;
  875.     End; {Case of}
  876.     End;
  877.  
  878. S_UserMsg := ' <F1>=clear screen <ESC>=exit ';
  879.  
  880. Case Screen_Mode of
  881.    2 : S_ReadField;
  882.    1 : S_ReadScreen;
  883. End; {Case of}
  884.  
  885. If  S_Fkey Then
  886.     Begin
  887.     If  (Not S_Shift) And
  888.         (Not S_Ctrl)  And
  889.         (Not S_Alt)   Then
  890.         Begin
  891.         If  S_F1 Then
  892.             Begin
  893.             S_ClearScreen(1);
  894.             S_Point := 4;
  895.             End;
  896.         End;
  897.     End;
  898. {*** changes ***}
  899. End;
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910. Procedure ScrDemo_Init;
  911. Begin
  912.  
  913. S_OpenScreenFile('ScrDemo.SCR');
  914.  
  915. Initialize_Demo_Menu_buf;
  916. Initialize_Demo_Screen_Buf;
  917. Initialize_Mouse_Demo_Buf;
  918. Initialize_Dupe_Fields_Buf;
  919. S_LoadScreen('Demo_Menu');
  920.  
  921. TextBackGround(Black);
  922. TextColor(Green);
  923.  
  924. S_ErrorSound := True;
  925. S_ErrorFreq  := 300;
  926. S_ErrorDur   := 100;
  927. S_HelpSound  := True;
  928. S_HelpFreq   := 400;
  929. S_HelpDur    := 100;
  930. S_UserSound  := True;
  931. S_UserFreq   := 200;
  932. S_UserDur    := 100;
  933.  
  934. Screen_Mode  := 0;
  935. S_Cursor     := S_Normal;
  936. S_Sound      := False;
  937. S_ShowStatus := True;
  938. End;
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947. Procedure Read_Menu_Screen;
  948. Var
  949. X,Y,Z : Integer;
  950. Begin
  951. Option := 1;
  952. S_LoadScreen('Demo_Menu');
  953.  
  954. Repeat
  955.  
  956.     Demo_Menu_Buf.O1 := 'Example Data Entry Screen';
  957.     Demo_Menu_Buf.O2 := 'Demo of Mouse functions';
  958.     Demo_Menu_Buf.O3 := 'Customizing screen colors';
  959.     Demo_Menu_Buf.O4 := 'Using S_ReadScreen';
  960.     Demo_Menu_Buf.O5 := 'Using S_ReadField';
  961.     Demo_Menu_Buf.O6 := 'Using S_ReadKey';
  962.     Demo_Menu_Buf.O7 := 'Using S_NextKey';
  963.     Demo_Menu_Buf.O8 := '"Pop Up" windows demo';
  964.     Demo_Menu_Buf.O13:= 'Mixed ScrEdit';
  965.  
  966.     If  Option < 1 Then Option := 9;
  967.     If  Option > 9 Then Option := 1;
  968.  
  969.     With Demo_Menu_Buf Do
  970.         Begin
  971.         P1 := '';
  972.         P2 := '';
  973.         P3 := '';
  974.         P4 := '';
  975.         P5 := '';
  976.         P6 := '';
  977.         P7 := '';
  978.         P8 := '';
  979.         P13:= '';
  980.         Case Option of
  981.             1  : Begin
  982.                  M1 := 'This option is a pratical example of a';
  983.                  M2 := 'data entry screen that demonstrates how';
  984.                  M3 := 'to use EDIT MASKS, DUPE FIELDS, AUTO';
  985.                  M4 := 'HELP, AUTO VALIDATE, SOUND On/Off,';
  986.                  M5 := 'CLEAR SCREEN, CLEAR DUPES, and CHANGING';
  987.                  M6 := 'MESSAGE LINE COLORS.';
  988.                  P1 := '==>';
  989.                  End;
  990.             2  : Begin
  991.                  M1 := 'Using the MOUSE interface. This option ';
  992.                  M2 := 'shows how to set up and use all the';
  993.                  M3 := 'features of the MOUSE and MOUSE DRIVER.';
  994.                  M4 := 'How to monitor for mouse buttons being';
  995.                  M5 := 'pressed or mouse movement. How to ';
  996.                  M6 := 'define mouse windows, and much more..';
  997.                  P2 := '==>';
  998.                  End;
  999.             3  : Begin
  1000.                  M1 := 'This option demonstrates how to change';
  1001.                  M2 := 'the color assignments for screens, and';
  1002.                  M3 := 'screen fields "on the fly". With these';
  1003.                  M4 := 'procedures you can write installation ';
  1004.                  M5 := 'routines that will make your programs ';
  1005.                  M6 := 'customizable to the users taste.      ';
  1006.                  P3 := '==>';
  1007.                  End;
  1008.             4  : Begin
  1009.                  M1 := 'This option demonstrates using more   ';
  1010.                  M2 := 'complex field validation statements to';
  1011.                  M3 := 'control data entry into a screen. It  ';
  1012.                  M4 := 'demonstrates the use of nearly all the';
  1013.                  M5 := 'field validation statements and using ';
  1014.                  M6 := 'them with S_READSCREEN.';
  1015.                  P4 := '==>';
  1016.                  End;
  1017.             5  : Begin
  1018.                  M1 := 'This option is just like option 4     ';
  1019.                  M2 := 'except it uses S_READFIELD to process ';
  1020.                  M3 := 'each field on the screen individually.';
  1021.                  M4 := 'You will see that it works quite diff-';
  1022.                  M5 := 'erently than the previous example that';
  1023.                  M6 := 'uses S_READSCREEN.';
  1024.                  P5 := '==>';
  1025.                  End;
  1026.             6  : Begin
  1027.                  M1 := 'This option demonstrates how a program';
  1028.                  M2 := 'can communicate with the user using the';
  1029.                  M3 := 'message line to display a message that';
  1030.                  M4 := 'the user must respond to by pressing a';
  1031.                  M5 := 'key. The key pressed is not echoed to ';
  1032.                  M6 := 'the screen. See S_READKEY for more info';
  1033.                  P6 := '==>';
  1034.                  End;
  1035.             7  : Begin
  1036.                  M1 := 'This option demonstrates how S_NEXTKEY';
  1037.                  M2 := 'works. It is similar to S_READKEY     ';
  1038.                  M3 := 'except no screen field values will be  ';
  1039.                  M4 := 'displayed and no messages can be disp- ';
  1040.                  M5 := 'layed. Only the next key pressed is    ';
  1041.                  M6 := 'returned to your program.              ';
  1042.                  P7 := '==>';
  1043.                  End;
  1044.             8  : Begin
  1045.                  M1 := 'Demonstrates iHn Systems`s  "POP UP" ';
  1046.                  M2 := 'windows package that is included with';
  1047.                  M3 := 'the registered version of Turbo ScrEdit';
  1048.                  M4 := '';
  1049.                  M5 := '';
  1050.                  M6 := '';
  1051.                  P8 := '==>';
  1052.                  End;
  1053.              9 : Begin
  1054.                  M1 := 'This option demonstarates how you can ';
  1055.                  M2 := 'exit a procedure using a Turbo ScrEdit';
  1056.                  M3 := 'screen to use your language`s standard';
  1057.                  M4 := 'I/O statements such as CLRSCR, WRITELN,';
  1058.                  M5 := 'READLN, ect. To resume using Turbo     ';
  1059.                  M6 := 'ScrEdit, use S_REFRESHSCREEN and go on.';
  1060.                  P13 := '==>';
  1061.                  End;
  1062.             End;{Case of};
  1063.     End;
  1064.     Repeat
  1065.         S_ReadKey;
  1066.         If  (S_Up)   Or
  1067.             (S_Down) Or
  1068.             (S_Enter)Then
  1069.             {
  1070.             (S_Esc)  Then
  1071.             }
  1072.             Begin
  1073.             If  S_Down Then
  1074.                 Option := Option + 1;
  1075.  
  1076.             If  S_Up Then
  1077.                 Option := Option - 1;
  1078.  
  1079.             If  S_Enter Then
  1080.                 Begin
  1081.                 If  Option = 1 Then
  1082.                     Begin
  1083.                     RecordDemo;
  1084.                     S_LoadScreen('Demo_Menu');
  1085.                     End;
  1086.                 If  Option = 2 Then
  1087.                     Begin
  1088.                     If  S_MouseInstalled Then
  1089.                         Begin
  1090.                         S_LoadScreen('Mouse_Demo');
  1091.                         S_ClearScreen(1);
  1092.                         MouseDemo;
  1093.                         S_LoadScreen('Demo_Menu');
  1094.                         End
  1095.                     Else
  1096.                         S_ErrorMsg := 'Mouse Driver is not loaded into memory';
  1097.                     End;
  1098.                 If  Option = 3 Then
  1099.                     Begin
  1100.                     Initialize_Color_Demo_Buf;
  1101.                     S_LoadScreen('Color_Demo');
  1102.                     ChangeColors;
  1103.                     S_LoadScreen('Demo_Menu');
  1104.  
  1105.                     End;
  1106.                 If  Option = 4 Then
  1107.                     Begin
  1108.                     Screen_Mode := 1;
  1109.                     S_LoadScreen('Demo_Screen');
  1110.                     S_ClearScreen(1);
  1111.  
  1112.                     While Not S_ESC Do Process_Screen;
  1113.  
  1114.                     S_LoadScreen('Demo_Menu');
  1115.                     End;
  1116.  
  1117.                 If  Option = 5 Then
  1118.                     Begin
  1119.                     Screen_Mode := 2;
  1120.                     S_LoadScreen('Demo_Screen');
  1121.                     S_ClearScreen(1);
  1122.  
  1123.                     While Not S_ESC Do Process_Screen;
  1124.  
  1125.                     S_LoadScreen('Demo_Menu');
  1126.                     S_ResetkeyFlags;
  1127.                     End;
  1128.                 If  Option = 6 Then
  1129.                     Begin
  1130.                     S_UserMsg := 'Demo of S_READKEY - Press "C" key to continue';
  1131.  
  1132.                     Repeat
  1133.                         S_ReadKey;
  1134.                         S_UserMsg := 'OOPS!! wrong key - Press "C" key to continue';
  1135.                     Until UpCase(S_Ch) = 'C';
  1136.  
  1137.                     S_UserMsg := ' "C" has been pressed - You may continue';
  1138.                     End;
  1139.  
  1140.                 If  Option = 7 Then
  1141.                     Begin
  1142.                     For X := 1 to 6 Do
  1143.                         Begin
  1144.                         Gotoxy(39,14+X);
  1145.                         Write('                                         ');
  1146.                         End;
  1147.                     gotoxy(39,17);
  1148.                     Write('   << OKAY PRESS SHIFT C TO CONTINUE >>');
  1149.                     Repeat
  1150.                         S_NextKey;
  1151.                     Until (S_Shift) and (UpCase(S_Ch)='C');
  1152.                     End;
  1153.  
  1154.                 If  Option = 8 Then
  1155.                     Begin
  1156.                     S_SetCursor(S_Normal);
  1157.                     If S_BW Then
  1158.                        Exec('demowind.exe','/BW')
  1159.                     Else
  1160.                        Exec('demowind.exe','');
  1161.                     S_SetCursor(S_OFF);
  1162.                     If  DosError > 0 Then
  1163.                         Begin
  1164.                         If  DosError = 8 then
  1165.                             s_UserMsg := 'Not enough memory to run windows demo'
  1166.                         Else
  1167.                             If  DosError > 0 Then
  1168.                                 S_UserMsg := 'DemoWind.EXE is not in current directory';
  1169.                         End
  1170.                     Else
  1171.                         S_UserMsg := ' End of Windows Demo ';
  1172.  
  1173.                     End;
  1174.  
  1175.                 If  Option = 9 Then
  1176.                     Begin
  1177.                     Back_To_Turbo_Pascal_Land;
  1178.                     S_RefreshScreen;
  1179.                     End;
  1180.  
  1181.                 S_ResetKeyFlags;
  1182.                 End;
  1183.             End
  1184.         Else
  1185.             S_UserMsg := ' Only UP and DOWN arrows and ENTER and ESC are valid';
  1186.  
  1187.     Until (S_Esc)Or(S_UP)Or(S_Down);
  1188.  
  1189. Until (S_Esc);
  1190. End;
  1191.  
  1192.  
  1193.  
  1194.  
  1195. {*****************************
  1196.  
  1197. MAIN MENU SCREEN
  1198.  
  1199. Section 1 of Turbo ScrEdit Tutor Describes this portion of code
  1200.  
  1201. *****************************}
  1202.  
  1203. Begin
  1204. ScrDemo_Init;
  1205. Read_Menu_Screen;
  1206. S_CloseScreenFile;
  1207. gotoxy(1,25);
  1208. End.
  1209.